{\small\path{https://cppcodetips.wordpress.com/2013/12/23/uml-class-diagram-explained-with-c-samples/}}

\noindent

Widoczność w klasie
\begin{itemize}\setlength{\itemsep}{2pt}\setlength{\parskip}{2pt}\vspace{-6pt}
\item[\ ] {\large \verb|+| \emph{public}}
\item[\ ] {\large \verb|-| \emph{private}}
\item[\ ] {\large \verb|#| \emph{protected}}
\item[\ ] \verb|~| \emph{package}
\item[\ ] \verb|/| \emph{derived}
\end{itemize}
Różne typy
\begin{itemize}\setlength{\itemsep}{2pt}\setlength{\parskip}{2pt}\vspace{-6pt}
\item pola statyczne są oznaczane \underline{podkreśleniem}
\item funkcje czysto wirtualne (abstrakcyjne) są oznaczane \textit{italikami}
\end{itemize}


\paragraph{Relacje klas.}
Wyróżniamy:
\begin{itemize}\setlength{\itemsep}{2pt}\setlength{\parskip}{2pt}\vspace{-6pt}
\item Asocjacja: \emph{ {\bf association} -- MyClass {\bf knows} OtherClass}\\
Obiekt {\tt MyClass} posiada wskaźnik lub referencję 
do instancji {\tt OtherClass}
\item Zależność: \emph{ {\bf dependency} -- MyClass {\bf uses} OtherClass}\\
Klasa {\tt OtherClass} jest parametrem lub zmienną lokalną
metody klasy {\tt MyClass}
\item Agregacja: \emph{ {\bf aggregation} -- MyClass {\bf has} OtherClass}\\
Klasa ma {\tt MyClass} ma kolekcję lub kontener instancji {\tt OtherClass},
ale przechowywane obiekty nie mają zależności cyklu życia od kontenera;
tj. gdy kontener jest niszczony, to składowe nie są usuwane
\item Kompozycja: \emph{ {\bf composition} -- MyClass {\bf has} OtherClass}\\
to silniejsza forma agregacji;
klasa {\tt MyClass} jest kolekcją lub kontenerem instancji {\tt OtherClass},
lecz przechowywane obiekty mają silną zależność cyklu życia od kontenera;
jeżeli kontener jest niszczony, to również jego składowe są usuwane
\item Dziedziczenia: \emph{ {\bf inheritance (generalization)} 
 -- MyClass {\bf is} OtherClass}\\
 Klasa {\tt MyClass} dziedziczy po {\tt OtherClass}
\item Klasa szablonowa: \emph{ {\bf class template}}\\
{\tt X<Y>}
\end{itemize}

\noindent
Krotność:
\begin{itemize}\setlength{\itemsep}{2pt}\setlength{\parskip}{2pt}\vspace{-6pt}
\item[\bf 0..1] 0 lub 1 instancja
\item[\bf 1] dokładnie 1 instancja
\item[\bf 0..*] 0 lub więcej instancji
\item[\bf *] 0 lub więcej instancji
\item[\bf 1..*] 1 lub więcej instancji
\end{itemize}



